/**
 * 封装uni-app网络请求
 * 使用方式: http({url, method, data, param})
 */
const http = (options) => {
    // 默认配置
    const baseUrl = 'https://www.rebirthealth.com'; // 替换为你的接口基础地址
    const token = uni.getStorageSync('token')
    let defaultOptions = {
        method: 'GET', // 默认请求方式
        header: {
            'Content-Type': 'application/json',
            'lang': 'zh'
            // 可添加默认token等信息
            // 'Authorization': 'Bearer ' + uni.getStorageSync('token')
        },
        data: {}, // 请求体数据
        param: {}, // URL参数
        ...options
    };
    if (token) {
        defaultOptions.header['Authorization'] = token
    }

    // 拼接 URL 参数（替代 URLSearchParams）
    let url = baseUrl + defaultOptions.url;
    if (Object.keys(defaultOptions.param).length > 0) {
        let paramStr = '';
        Object.keys(defaultOptions.param).forEach((key, index) => {
            paramStr += `${index === 0 ? '?' : '&'}${key}=${defaultOptions.param[key]}`;
        });
        url += paramStr;
    }
    // 显示加载中
    uni.showLoading({
        title: '加载中...',
        mask: true
    });

    // 返回Promise
    return new Promise((resolve, reject) => {
        uni.request({
            url,
            method: defaultOptions.method,
            header: defaultOptions.header,
            data: defaultOptions.data,
            success: (res) => {
                // 隐藏加载中
                uni.hideLoading();

                // 根据实际业务状态码处理
                const { statusCode, data } = res;

                // HTTP状态码判断
                if (statusCode === 200) {
                    // 假设接口返回格式为 { code, message, data }
                    if (data.code === 0) {
                        // 成功状态
                        resolve(data.data);
                    } else {
                        if (data.code === 401) {
                            uni.showToast({
                                title: '请先登录',
                                icon: 'none'
                            });
							console.log('请先登录');
                            uni.reLaunch({
                                url: "/pages/login/login",
                            });
                            reject(data);
                        }
                        // 业务错误
                        uni.showToast({
                            title: data.msg || '请求失败',
                            icon: 'none'
                        });
                        reject(data);
                    }
                } else {
                    // HTTP错误
                    uni.showToast({
                        title: `请求错误: ${statusCode}`,
                        icon: 'none'
                    });
                    reject(res);
                }
            },
            fail: (err) => {
                // 隐藏加载中
                uni.hideLoading();

                // 网络错误
                uni.showToast({
                    title: '网络连接失败',
                    icon: 'none'
                });
                reject(err);
            }
        });
    });
};

// 暴露接口
export default http;